iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
Software Development

爬蟲基礎入門與實際應用系列 第 20

DAY20、專題二 : Pixiv (1)

  • 分享至 

  • xImage
  •  

這次我們來用selenium爬爬看Pixiv。
目標是登入後輸入pixiv ID並自動爬下該作者所有的圖片。


今天先來登入。

首先先把環境架設好,看你喜好用哪種遊覽器。
我這裡使用Firefox和geckodriver作為示範。


首先先用selenium打開看看登入頁面

driver = webdriver.Firefox()
print('login...')
driver.get("https://accounts.pixiv.net/login")

這裡print的用意是之後用headless跑的話會跑蠻常一段時間且沒有畫面可以看,有定時輸出進度會比較方便判斷問題在哪。
總之建議拿headless就多輸出下現在在幹嘛。


成功開啟登入頁面後可以看到下面的樣子
https://ithelp.ithome.com.tw/upload/images/20221006/20152706RKVMLgRC3M.png
這次打算利用autocomplete = 'username'來找到輸入格,密碼那格同理。
程式碼如下

account = driver.find_element(By.XPATH,"//input[@autocomplete = 'username']")
passwd = driver.find_element(By.XPATH,"//input[@autocomplete = 'current-password']")
account.send_keys('您的帳號')
passwd.send_keys('您的密碼')
passwd.send_keys(Keys.RETURN)

也就是定位出input標籤下的autocomplete = 'username'那個位置後把帳密透過send_keys丟帳密上去。
最後再透過Keys.RETURN來模擬按下enter的行為來登入。

這裡用到了DAY18提到的xpath。如果不懂可以再回去看看。


這裡有個小坑是登入後直接get下一個網址的話可能會因為太快跳掉所以被判定為登入失敗,所以我們要先等待他爬完。
我這邊選擇檢查右上角的小清單有沒有出現自己的username
https://ithelp.ithome.com.tw/upload/images/20221007/201527066iAP5HjGWA.png
碼掉的地方就是你pixiv的名子,等待的程式碼如下:

WebDriverWait(driver, 15).until(lambda driver: driver.find_element(By.XPATH,"//div[@title='"+'你的名子'+"']"))

接著把程式碼併起來應該就能動了。
偶爾登入會被recapcha卡住,所以不要短時間試太多次比較好。


上一篇
DAY19、ChroPath
下一篇
DAY21、專題二 : Pixiv (2)
系列文
爬蟲基礎入門與實際應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言